1
C++ 배열의 진화
AI013Lesson 4
00:00

다음과 같은 전환은 C 스타일 배열 에서 std::array 는 현대 C++에서 형 안전성제네릭 프로그래밍 으로의 근본적인 전환을 의미합니다.

1. 포인터 감소 문제

구형 배열 (int arr[N])는 "포인터 감소"라는 문제를 겪습니다. 함수에 전달될 때 크기 메타데이터를 잃고 순수 포인터 (int*)로 변환됩니다. 이로 인해 안전하지 않은 포인터 연산과 버퍼 오버플로우가 발생합니다.

2. C++11의 현대화

std::array 는 원시 배열을 둘러싼 얇은, 오버헤드 없는 래퍼 를 제공합니다. 이는 '파이브 규칙'을 존중하면서 표준 템플릿 라이브러리(Standard Template Library)와 통합됩니다. 파이브 규칙.

C++11 이전 (구형)T[N]감소C++11 이후 (현대)std::array<T, N>+ std::forward (효율성)

3. std::forward를 활용한 완벽한 전달

C++11은 std::forward 를 통해 std::array 객체가 템플릿 래퍼를 통과할 때 중복 복사 없이 이동하도록 보장합니다. 참조 충돌 규칙을 활용함으로써 참조 충돌 규칙객체의 값 카테고리(좌값 및 우값)를 유지합니다.

$$T\&\& + \& \rightarrow T\&$$

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>